package com.emmmya.ocs.modules.system.serviceImpl;

import com.emmmya.ocs.common.base.BaseDao;
import com.emmmya.ocs.common.constant.SerialNumberConstant;
import com.emmmya.ocs.modules.system.dao.SerialNumberDao;
import com.emmmya.ocs.modules.system.entity.SerialNumber;
import com.emmmya.ocs.modules.system.service.SerialNumberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.persistence.EntityNotFoundException;

/**
 * 创建人：咕噜肉IT小店-黑医
 * 创建时间 2022年08月26日 11:38:20
 * 描述：
 */
@Service
@Slf4j
public class SerialNumberServiceImpl implements SerialNumberService {
    @Autowired
    SerialNumberDao serialNumberDao;

    @Override
    public BaseDao<SerialNumber, String> getRepository() {
        return serialNumberDao;
    }


    @Override
    public Integer getNextNo(String module) {
        try {
            SerialNumber sn = serialNumberDao.getById(module);
            if(sn == null) {
                return null;
            }else {
                Integer no = sn.getNo();
                if(no == null){
                    sn.setNo(1);
                }else{
                    sn.setNo(1+no);
                }
                serialNumberDao.saveAndFlush(sn);
                return no;
            }
        } catch (EntityNotFoundException e) {
            SerialNumber serialNumber = new SerialNumber();
            serialNumber.setModule(module);
            serialNumber.setNo(1);
            serialNumber.setFrequency(SerialNumberConstant.NEVER);
            serialNumberDao.save(serialNumber);
            return 1;
        }
    }

    @Override
    public void resetSerialNumberByModule(String module) {
        serialNumberDao.updateByModule(module);
    }

    @Override
    public void resetSerialNumberByFrequency(String frequency) {
        serialNumberDao.updateByFrequency(frequency);
    }
}
